#!/bin/bash

# 清华大学地图美食评分系统完整服务启动脚本

echo "🚀 启动清华大学地图美食评分系统服务..."

# 检查是否安装了PM2
if ! command -v pm2 &> /dev/null; then
    echo "❌ PM2 未安装,正在安装..."
    pnpm install -g pm2
fi

# 检查是否安装了serve(用于前端静态文件服务)
if ! command -v serve &> /dev/null; then
    echo "📦 安装 serve..."
    pnpm install -g serve
fi

# 创建日志目录
mkdir -p logs

# 检查环境文件
if [ ! -f "server/.env" ]; then
    echo "⚠️  警告: server/.env 文件不存在,请确保已配置环境变量"
fi

# ========== 后端构建 ==========
echo ""
echo "🔨 构建后端服务..."

# 检查后端依赖
if [ ! -d "server/node_modules" ]; then
    echo "📦 安装后端依赖..."
    cd server
    pnpm install
    cd ..
fi

# 构建后端 TypeScript
if [ -d "server" ]; then
    cd server
    echo "📦 编译 TypeScript..."
    pnpm run build
    if [ $? -eq 0 ]; then
        echo "✅ 后端构建完成"
    else
        echo "❌ 后端构建失败,请检查错误信息"
        exit 1
    fi
    cd ..
else
    echo "❌ server 目录不存在"
    exit 1
fi

# ========== 前端构建 ==========
echo ""
echo "🔨 构建前端应用..."

# 构建管理员端
if [ -d "admin" ]; then
    cd admin
    echo "📦 安装前端依赖..."
    pnpm install
    echo "📦 构建管理员端..."
    pnpm run build
    if [ $? -eq 0 ]; then
        echo "✅ 前端构建完成"
    else
        echo "❌ 前端构建失败,请检查错误信息"
        exit 1
    fi
    cd ..
else
    echo "❌ admin 目录不存在"
    exit 1
fi

# ========== 启动服务 ==========
echo ""
echo "▶️  启动 PM2 服务..."

# 停止现有进程(如果存在)
echo "🛑 停止现有进程..."
pm2 stop qinghua-food-rating-server qinghua-food-rating-admin 2>/dev/null || true
pm2 delete qinghua-food-rating-server qinghua-food-rating-admin 2>/dev/null || true

# 启动所有服务
pm2 start ecosystem.config.js --env production

# 保存PM2配置
pm2 save

# 设置开机自启
pm2 startup

echo ""
echo "✅ 所有服务启动完成！"
echo ""
echo "🌐 服务访问地址:"
echo "   - 后端API: http://localhost:3912"
echo "   - 管理员端: http://localhost:7821"
echo ""
echo "📱 小程序客户端(Client)不需要在服务器部署"
echo ""
echo "📊 查看状态: pm2 status"
echo "📝 查看日志: pm2 logs"
echo "🔄 重启服务: pm2 restart all"
echo "🛑 停止服务: pm2 stop all"
